Computer devices utilizing multiple processors are well known in the art, and are in wide use. Typically, in these devices, each processor receives data to be processed, performs certain calculations and sends the processed data to be further processed by a different processor. The data to be processed by each of the processors is saved in buffers in memory, which is typically a shared resource. The sender selects a buffer in which to store a message, checks if the buffer is available, then begins to write, which requires more than one cycle. Thus, it is important to ensure mutual exclusivity, so that no buffer is allocated to two processors simultaneously. Thus, no two processors will write to the same buffer at the same time. Intercommunication between these processors is accomplished by sending messages from one to the other.
Sending a message from a first processor to a second processor is carried out by the operating system. The first processor notifies the operating system that a message addressed to a second processor is stored at a certain address in the memory. The operating system stops the receiving processor and provides the address to a buffer in which the message is stored to the second processor. The second processor reads the message stored at the received buffer, and processes the data stored in that buffer. The second processor then notifies the operating system that the data is ready for further processing, or is ready to be used.
A managing scheme can be implemented by the operating system to control and coordinate the operation of the processers to ensure mutual exclusivity. However, utilizing the operating system is expensive in terms of resources, as each time a message is delivered the operating system must intervene, causing a bottle neck and requiring large overhead.
Accordingly, there is a long felt need for a device and method for improved inter-processor communication, and it would be very desirable if such a device and method operated without requiring intervention by the operating system.